package com.zyzd.retrofit.base;

import android.support.v7.widget.RecyclerView;

import java.util.List;

/**
 * Created by lzy on 2018/7/16 0016.
 * description ${列表 Contract}
 */
public interface BaseRecyclerContract {
    interface IView<A extends BaseAdapter, T> extends BaseContract.IView {

        RecyclerView.LayoutManager getLayoutManager();

        A createAdapter();

        RecyclerView.ItemDecoration getDividerItemDecoration();

        void onLoadDataSuccess(boolean isRefresh, List<T> data);

        void onLoadDataFail(boolean isRefresh, String msg);

        void onFinishLoad();

        /**
         * 设置是否可以加载更多
         *
         * @param enable
         */
        void setEnableLoadMore(boolean enable);

        /**
         * 配置当前页面是否支持加载更多
         */
        boolean isEnableLoadMore();

        /**
         * 配置当前页面是否支持刷新
         */
        boolean isEnableRefresh();

        /**
         * 配置当前页面是否支持首次进入自动刷新
         */
        boolean isAutoRefresh();
    }

    interface IPresenter<V extends BaseContract.IView,T> extends BaseContract.IPresenter<V> {
        /**
         * 刷新
         */
        void onRefresh();

        /**
         * 加载
         */
        void onLoadMore();

        /**
         * 重写后用于请求列表数据
         *
         * @param isRefresh 是否刷新
         */
        void loadData(boolean isRefresh);

        /**
         * 加载列表数据成功
         *
         * @param isRefresh 是否刷新
         * @param data      列表数据
         */
        void onLoadDataSuccess(boolean isRefresh, List<T> data);

        /**
         * 请求失败
         *
         * @param isRefresh 是否刷新
         * @param msg       错误信息
         */
        void onLoadDataFail(boolean isRefresh, String msg);

        /**
         * @return 默认分页大小
         */
        int getPageSize();

        /**
         * @return 默认起始页码
         */
        int getDefaultPageIndex();
    }
}
